/**
 * Object serialization的定义：
 *   允许将实现了Serializable接口的对象转换为字节序列，这些字节序列可以被完全存储以备以后重新生成原来的对象。
 *   serialization不但可以在本机做，而且可以经由网络操作（即RMI）。
 *   这个好处是很大的----因为它自动屏蔽了操作系统的差异，字节顺序等。
 *   比如，在Window平台生成一个对象并序列化之，然后通过网络传到一台Unix机器上，然后可以在这台Unix机器上正确地重构这个对象。 
 *   
 * Object serialization主要用来支持2种主要的特性：
 *   1、Java的RMI(remote method invocation).RMI允许象在本机上一样操作远程机器上的对象。
 *      当发送消息给远程对象时，就需要用到serializaiton机制来发送参数和接收返回直。
 *   2、Java的JavaBeans.Bean的状态信息通常是在设计时配置的。
 *      Bean的状态信息必须被存起来，以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。 
 *      
 *  持久化： 
 *    英文里的persistence.但是Java语言里现在只支持lightweight persistence,就是轻量级持久化，这是通过serialization机制来实现的。
 *    persistence是指一个对象的生命周期不由程序是否执行来决定，即使是在程序终止时这个对象也存在。
 *    它把一个serializable的对象写到磁盘（本机或其他机器上的非RAM存储器），并在程序重新调用时再读取对象到通常的RAM存储器。 
 *    
 *    为什么说Java的serialization机制实现的是lightweight persistence?因为你必须显式的序列化和反序列化程序里的对象；
 *    而不是直接由一个关键词来定义一个对象是序列化的然后由系统做相应的处理。
 *    如果以后的Java版本出现一个新的关键字来实现这种机制，比如就是persistence,如果我用
 *    persistence  (String s="chinaunix")
 * 
 * 序列化是把一个对象的状态写入一个字节流的过程，它执行RMI，
 * RMI允许一台机器上的JAVA对象调用不同机器上的JAVA对象方法，
 * 对象可以作为参数提供给那个远程方法，发送机序列化该对象并传送它，接收机执行反序列化。
 * 
 * 序列化和反序列化的关系图表可形成包含循环引用的顺序图表。这是整个序列化的总体思想。
 * 而Serializable接口属于支持序列化的一个接口，只有一个实现它的对象可以被序列化工具存储和回复，
 * Serializable接口没有定义任何成员，只用来表示一个累可以被序列化，若该类可以序列化，那么它的所有子类都可以。 
 * 
 * @author MIAO
 * Created on 2011-10-20
 * For more information, please visit:ismiao.com
 */
package com.ismiao.java.Serializable;

import java.io.Serializable;

public class MyClass implements Serializable {
	String s;
	int i;
	double d;

	public MyClass(String s, int i, double d) {
		this.s = s;
		this.i = i;
		this.d = d;
	}

	public String toString() {
		return "s=" + s + ";i=" + i + ";d=" + d;
	}
}
